package algorithm.stringAlgorithm;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName: MaxNumberOfBalloons
 * @Description 1189. “气球” 的最大数量
 * 给你一个字符串text，你需要使用 text 中的字母来拼凑尽可能多的单词"balloon"（气球）。
 *
 * 字符串text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词"balloon"。
 *
 * @Author skywingking
 * @Date 2022/2/13 5:01 下午
 **/
public class MaxNumberOfBalloons {
    public int maxNumberOfBalloons(String text) {
        if(null == text || text.length() == 0){
            return 0;
        }
        Map<Character,Integer> balloonMap = new HashMap<>();
        balloonMap.put('b',0);
        balloonMap.put('a',0);
        balloonMap.put('l',0);
        balloonMap.put('o',0);
        balloonMap.put('n',0);
        for(int i = 0; i < text.length();i++){
            if(balloonMap.containsKey(text.charAt(i))){
                balloonMap.put(text.charAt(i),balloonMap.get(text.charAt(i)) + 1);
            }
        }
        int b = balloonMap.get('b');
        int a = balloonMap.get('a');
        int l = balloonMap.get('l') / 2;
        int o = balloonMap.get('o') / 2;
        int n = balloonMap.get('n');
        return Math.min(Math.min(Math.min(b,a),Math.min(l,o)),n);
    }

    public int maxNumberOfBalloons_v2(String text){
        int[] cnt = new int[5];
        for (int i = 0; i < text.length(); ++i) {
            char ch = text.charAt(i);
            if (ch == 'b') {
                cnt[0]++;
            } else if (ch == 'a') {
                cnt[1]++;
            } else if (ch == 'l') {
                cnt[2]++;
            } else if (ch == 'o') {
                cnt[3]++;
            } else if (ch == 'n') {
                cnt[4]++;
            }
        }
        cnt[2] /= 2;
        cnt[3] /= 2;
        return Arrays.stream(cnt).min().getAsInt();
    }
}